package com.zretc.dbtools;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

//封装，数据库工具包
public class DBTools {
	// 私有化变量，静态变量才可以被静态方法调用，常量值不能被修改
	private static final String url = "jdbc:mysql://localhost:3306/jja2001";
	private static final String user = "root";
	private static final String password = "root";

	// 定义连接方法
	public static Connection getConnection() {
		Connection conn = null;
		try {
			// 可能发生异常
			// 将某些类载入到虚拟机
			Class.forName("com.mysql.jdbc.Driver");
			// 得到连接对象
			conn = DriverManager.getConnection(url, user, password);
		} catch (ClassNotFoundException | SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return conn;
	}

	// 定义增删改的方法
	public static int getUpdate(String sql, Object... params) {
		// 调用连接的方法
		Connection conn = getConnection();
		// 初始化n的值
		int n = 0;
		PreparedStatement pstmt = null;

		try {
			pstmt = conn.prepareStatement(sql);
			if (params != null) {
				for (int i = 0; i < params.length; i++) {
					pstmt.setObject(i + 1, params[i]);
				}
			}
//			System.out.println(pstmt);
			// 执行操作
			n = pstmt.executeUpdate();
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} finally {
			// 释放资源
			try {
				pstmt.close();
			} catch (SQLException e1) {
				// TODO Auto-generated catch block
				e1.printStackTrace();
			}
			try {
				conn.close();
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
		return n;
	}

	// 定义查询的方法
	public static ResultSet getQuery(String sql, Object... params) {
		// 调用连接的方法
		Connection conn = getConnection();
		// 初始化预处理对象的值
		PreparedStatement pstmt = null;
		ResultSet rs = null;
		try {
			// 获得预处理对象
			pstmt = conn.prepareStatement(sql);
			if (params != null) {
				for (int i = 0; i < params.length; i++) {
					pstmt.setObject(i + 1, params[i]);
				}
			}
			// 执行查询操作
			rs = pstmt.executeQuery();
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} finally {
//			try {
//				pstmt.close();
//			} catch (SQLException e) {
//				// TODO Auto-generated catch block
//				e.printStackTrace();
//			}
//			try {
//				conn.close();
//			} catch (SQLException e) {
//				// TODO Auto-generated catch block
//				e.printStackTrace();
//			}
		}
		return rs;
	}

}
